package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	res := make(map[string]interface{}) //空接口 interface{} 是 Go 的特殊接口，表示所有类型的超集。
	res["code"] = 200
	res["msg"] = "success"
	res["data"] = map[string]interface{}{
		"username": "Tom",
		"age":      "30",
		"hobby":    []string{"读书", "爬山"},
	}
	fmt.Println("map data :", res)

	//序列化
	jsons, errs := json.Marshal(res)
	if errs != nil {
		fmt.Println("json marshal error:", errs)
	}
	fmt.Println("jsons = ", string(jsons))

	fmt.Println("--------反序列化----------")

	res2 := make(map[string]interface{})
	errs = json.Unmarshal(jsons, &res2) //如反序列化时 jsons 为string 类型，需要进行转换[]byte(jsons)
	if errs != nil {
		fmt.Println("json unmarshal error:", errs)
	}
	fmt.Println("res2:", res2)
}
